﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.IO;
using SMA.GENTEv1.Dados;

namespace SMA.GENTEv1
{
    /// <summary>
    /// tab_tipo_documento_dependente
    /// </summary>
    public class TipoDocumentoDependente
    {
        #region Enumeradores
        public enum TipoDocumento
        {
           AuxilioCreche_ProtocoloDeRecebimento = 15
        }
        #endregion

        #region Variaveis Membro
        private int _idTipoDocumentoPessoa;
        private string _descricao;
        private int _tamanhoArquivo;
        private GENTEEntities _context;
        #endregion

        #region Parametros
        public int IdTipoDocumentoDependente
        {
            get { return _idTipoDocumentoPessoa; }
            set { _idTipoDocumentoPessoa = value; }
        }

        public string Descricao
        {
            get { return _descricao; }
            set { _descricao = value; }
        }

        public int TamanhoArquivo
        {
            get { return _tamanhoArquivo; }
            set { _tamanhoArquivo = value; }
        }
        #endregion

        #region Construtores
        public TipoDocumentoDependente()
        {
            _context = new GENTEEntities();
        }

        public TipoDocumentoDependente(int pIdTipoDocumentoPessoa)
        {
            _context = new GENTEEntities();
            Carregar(pIdTipoDocumentoPessoa);

        }
        #endregion

        #region Metodos Publicos
        public void Carregar(int pIdTipoDocumentoPessoa)
        {

            var consulta = from tipodocpessoa in _context.tab_tipo_documento_pessoa
                           where (tipodocpessoa.id_tipo_documento_pessoa == pIdTipoDocumentoPessoa)
                           select tipodocpessoa;

            var listConsulta = consulta.ToList();

            foreach (var list in listConsulta)
            {
                this._idTipoDocumentoPessoa = list.id_tipo_documento_pessoa;
                this._descricao = list.descricao;
                this._tamanhoArquivo = list.tamanho_arquivo;
            }
        }

        public string ObterCaminhoDocumento(string pCaminhoFisico, TipoDocumento pTipoDocumento)
        {
            try
            {
                string _caminhodocumento = pCaminhoFisico + @"\Pessoas\Documentos\" + pTipoDocumento.GetHashCode().ToString();

                if (!Directory.Exists(_caminhodocumento))
                {
                    Directory.CreateDirectory(_caminhodocumento);
                }

                return _caminhodocumento;
            }
            catch (Exception ex)
            {
                throw ex;
            }
        }

        public string ObterNomeDocumento(string pNomeArquivo, int pIdPessoa, TipoDocumento pTipoDocumento)
        {
            try
            {
                string _nomedocumento = "";
                DirectoryInfo _dirinfo = new DirectoryInfo(pNomeArquivo);

                string[] _documento = pNomeArquivo.Split('\\');
                int _tamanhoarr = _documento.Length - 1;

                _documento[_tamanhoarr] = pIdPessoa.ToString() + "_" + pTipoDocumento.GetHashCode().ToString() + _dirinfo.Extension;
                _nomedocumento = _documento[_tamanhoarr];
                
                return _nomedocumento;
            }
            catch (Exception ex)
            {
                throw ex;
            }
        }

        public string ObterNomeDocumento(string pNomeArquivo, int pIdPessoa, TipoDocumento pTipoDocumento, string pComplemento)
        {
            try
            {
                string _nomedocumento = "";
                DirectoryInfo _dirinfo = new DirectoryInfo(pNomeArquivo);

                string[] _documento = pNomeArquivo.Split('\\');
                int _tamanhoarr = _documento.Length - 1;

                _documento[_tamanhoarr] = pIdPessoa.ToString() + "_" + pTipoDocumento.GetHashCode().ToString() + "_" + pComplemento.ToString() + _dirinfo.Extension;
                _nomedocumento = _documento[_tamanhoarr];

                return _nomedocumento;
            }
            catch (Exception ex)
            {
                throw ex;
            }
        }

        public string ObterNomeDocumento(int pIdPessoa, TipoDocumento pTipoDocumento, string pComplemento)
        {
            try
            {
                string _nomedocumento = "";
                
                _nomedocumento = pIdPessoa.ToString() + "_" + pTipoDocumento.GetHashCode().ToString() + "_" + pComplemento.ToString() + ".pdf";

                return _nomedocumento;
            }
            catch (Exception ex)
            {
                throw ex;
            }
        }
        #endregion
    }
}
